//package com.wyd.tree;
//
//
//class Node{
//    private int key;
//
//    private Node left;
//
//    private Node right;
//
//    public int getKey() {
//        return key;
//    }
//
//    public void setKey(int key) {
//        this.key = key;
//    }
//
//
//    public Node getLeft() {
//        return left;
//    }
//
//    public void setLeft(Node left) {
//        this.left = left;
//    }
//
//    public Node getRight() {
//        return right;
//    }
//
//    public void setRight(Node right) {
//        this.right = right;
//    }
//    public int heigh(){
//        return heigh(this);
//    }
//
//    public int heigh(Node node){
//        if(node==null){
//            return 0; //递归结束，空子树高度为0
//        }else{
//            //递归获取左子树高度
//            int l = heigh(node.getLeft());
//            //递归获取右子树高度
//            int r = heigh(node.getRight());
//            //高度应该算更高的一边，（+1是因为要算上自身这一层）
//            return l>r? (l+1):(r+1);
//        }
//    }
//
//}
//public class BinaryTree {
//
//    private Node root;
//
//    public BinaryTree(Node root) {
//        this.root = root;
//    }
//
//    public BinaryTree() {
//    }
//
//    public Node getRoot() {
//        return root;
//    }
//    public int heigh(){
//        return getRoot().heigh();
//    }
//
//
//    public void insert(int key){
//        Node newNode = new Node();
//        newNode.setKey(key);
//
//        if (root == null){
//            this.root = newNode;
//        }else {
//            // 小 等于 大于
//            // 左  当前 右
//            // 一直找 找到 应该在的位置为空的节点
//            Node cur = this.root;
//            while (true){
//                if (key == cur.getKey()){
//                    // 已经有了不用做处理
//                    // 如果有数据可以做覆盖
//                    return;
//                }
//
//                if (key < cur.getKey()){
//                    if (cur.getLeft() == null){
//                        cur.setLeft(newNode);
//                    }
//                    cur =  cur.getLeft();
//                }
//                if (key > cur.getKey()){
//                    if (cur.getRight() == null){
//                        cur.setRight(newNode);
//                    }
//                    cur = cur.getRight();
//                }
//            }
//
//        }
//    }
//
//
//    public void printTree(Node node, int level) {
//        if (node == null) {
//            return;
//        }
//
//
//        printTree(node.getRight(), level + 1);
//        if (level != 0) {
//            for (int i = 0; i < level - 1; i++)
//            {
//                System.out.print("|\t");
//            }
//            System.out.println("|-------" + node.getKey());
//        } else {
//            System.out.println(node.getKey());
//
//        }
//
//        printTree(node.getLeft(), level + 1);
//    }
//
//    public static void main(String[] args) {
//        BinaryTree binaryTree = new BinaryTree();
//
//        binaryTree.insert(10);
//        binaryTree.insert(2);
//        binaryTree.insert(1);
//        binaryTree.insert(4);
//        binaryTree.insert(3);
//        binaryTree.insert(12);
//        binaryTree.insert(11);
//
//        binaryTree.insert(13);
//        binaryTree.insert(14);
//
//        binaryTree.insert(18);
//
//
//        binaryTree.printTree(binaryTree.getRoot(), 0);
//
//
//
//    }
//
//}
